<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!--
Copyright 2004-2024 H2 Group. Multiple-Licensed under the MPL 2.0,
and the EPL 1.0 (https://h2database.com/html/license.html).
Initial Developer: H2 Group
-->
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head><meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>
Change Log
</title>
<link rel="stylesheet" type="text/css" href="stylesheet.css" />
<!-- [search] { -->
<script type="text/javascript" src="navigation.js"></script>
</head><body onload="frameMe();">
<table class="content"><tr class="content"><td class="content"><div class="contentDiv">
<!-- } -->

<h1>Change Log</h1>

<h2>Next Version (unreleased)</h2>
<ul>
<li>Issue #4159: Consider storing NO ACTION in the INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS columns
when this is the declaration
</li>
<li>Issue #4152: NPE in convertToTimestampTimeZone on timestamp comparison
</li>
<li>PR #4150: fix:Fix some errors in the javadoc
</li>
<li>PR #4149: fix:Possible overflow issues with CacheLongKeyLIRS.getMisses()
</li>
<li>Issue #4144: [2.3.232] Regression in ORDER BY ... DESC with WHERE ... IN and OR clauses
</li>
<li>Issue #4139: Oracle compatibility mode: unexpected Column alias is not specified exception in CTE
</li>
<li>Issue #4136: ArrayIndexOutOfBoundsException with compound index
</li>
<li>Issue #4124: java.lang.NullPointerException: Cannot invoke "String.equals(Object)" because "[0]" is null
</li>
<li>Issue #4116: Optimizer chooses wrong execution plan in some cases when index-sorted optimization is possible
</li>
<li>Issue #4114: Regression when using CAST expressions in ROW IN predicates
</li>
<li>Issue #4111: ALTER TYPE name ADD VALUE new_enum_value is not supported
</li>
</ul>

<h2>Version 2.3.232 (2024-08-11)</h2>
<ul>
<li>Issue #4005: Add optional version to RANDOM_UUID function and generator of version 7 in addition to existing version 4
</li>
<li>Issue #3945: Column not found in correlated subquery, when referencing outer column from LEFT JOIN .. ON clause
</li>
<li>Issue #4097: StackOverflowException when using multiple SELECT statements in one query (2.3.230)
</li>
<li>Issue #3982: Potential issue when using ROUND
</li>
<li>Issue #3894: Race condition causing stale data in query last result cache
</li>
<li>Issue #4075: infinite loop in compact
</li>
<li>Issue #4091: Wrong case with linked table to postgresql
</li>
<li>Issue #4088: BadGrammarException when the same alias is used within two different CTEs
</li>
<li>Issue #4079: [2.3.230] Regression in ORDER BY ... DESC on dates
</li>
</ul>

<h2>Version 2.3.230 (2024-07-15)</h2>
<ul>
<li>Issue #4091: Wrong case with linked table to postgresql
</li>
<li>Issue #2752: Fix for "double mark" error at database backup opening
</li>
<li>Issue #4052: Allow 0 as a valid chunk id
</li>
<li>Issue #4012: Fix "Chunk not found" database corruption by ensure proper prologue/epilogue for every SQL statement in JDBC ";" - separated list
</li>
<li>Issue #3960: Fix NPE in page rewrite
</li>
<li>Issue #3909: Reduce resource consumption of too aggressive disk space housekeeping
</li>
<li>Issue #701: An available index is never used for ordering, when the requested order is DESC
</li>
<li>Issue #4036: NULLS NOT DISTINCT constraint changed after column dropped
</li>
<li>Issue #4033: Wrong array produced when using ARRAY_AGG() on UNNEST(ARRAY[CAST(? AS INT)]) expression
in a PreparedStatement
</li>
<li>Issue #3909: Maintenance taking too much resources since 2.2.222
</li>
<li>Issue #4010: org.h2.jdbc.JdbcConnection.getTypeMap() returns null
</li>
<li>PR #4007: Update pom.xml related to CVE-2024-1597
</li>
<li>Issue #3907: MvStoreTool unable to Repair() or Rollback() [2.1.214]
</li>
<li>RP #3997: Server-side batch execution for prepared statements
</li>
<li>Issue #3106: Trailing commas in SELECT are accepted by the parser
</li>
<li>PR #3992: Add IPv6 support to H2 Console
</li>
<li>Issue #3966: Unable to insert null into a JSON column
</li>
<li>Issue #3554: Regression in 2.1.214 when joining 2 recursive CTE containing bind values
</li>
<li>PR #3989: Refactor CTE-related code and reduce recompilations
</li>
<li>Issue #3987: Allow empty &lt;with column list&gt;
</li>
<li>Issue #822: WITH clauses' column aliases are not maintained correctly when selecting from CTE from within a derived
table
</li>
<li>Issue #910: Common Table Expressions (CTE) inside WITH should have their own identifier scope
</li>
<li>Issue #3981: Unexpected result when using trigonometric functions
</li>
<li>Issue #3983: INVISIBLE columns should be ignored in INSERT statement without explicit column list
</li>
<li>Issue #3960: NullPointerException when executing batch insert
</li>
<li>Issue #3972: Constraints of local temporary tables aren't listed in INFORMATION_SCHEMA
</li>
<li>PR #3973: Fix Tool.showUsage() for GUIConsole
</li>
<li>Issue #3968: Add possibility to get index size on disk
</li>
<li>Issue #3909: Maintenance taking too much resources since 2.2.222
</li>
<li>Issue #3950: JdbcSQLIntegrityConstraintViolationException: Unique index or primary key violation
</li>
<li>PR #3947: Compound index search fix
</li>
<li>Issue #3940: Wrong estimation of a query execution cost with spatial index
</li>
<li>Issue #3931: MVStoreTool -dump throws a NullPointerException or returns binary data
</li>
<li>Issue #3910: Small error in the tutorial regarding full text search
</li>
<li>PR #3915: Improving search by compound indexes
</li>
<li>RP #3893: Fixed unit test is support en_GB locale
</li>
<li>Issue #2834: MERGE INTO fails with an error "Timeout trying to lock table"
</li>
<li>Issue #3883: Performance regression in 2.2.222
</li>
<li>PR #3879: Require Java 11
</li>
</ul>

<h2>Version 2.2.224 (2023-09-17)</h2>
<ul>
<li>Issue #3883 Performance regression in 2.2.222
</li>
</ul>

<h2>Version 2.2.222 (2023-08-22)</h2>
<ul>
<li>Fixed race condition in MVStore causing database corruption &quot;File corrupted in chunk ###&quot;
</li>
<li>PR #3873: ToC cache is effectively not used after the first shutdown
</li>
<li>Issue #3868: INFORMATION_SCHEMA.SESSIONS.ISOLATION_LEVEL returns isolation level of the current session in all rows
</li>
<li>PR #3865: Add possibility to enable virtual worker threads in TCP, Web, and PG servers on Java 21+
</li>
<li>PR #3864: Improve performance of TCP client driver when it is used from virtual threads
</li>
<li>Issue #2665: Parser shouldn't suggest compatibility syntax elements on parsing error
</li>
<li>Issue #3089: GREATEST and LEAST aren't fully compliant with the SQL Standard
</li>
<li>PR #3861: Improve SET EXCLUSIVE 2 and use stable time source for timeout exceptions
</li>
<li>PR #3859: Fix conversion of PK columns to identity columns
</li>
<li>Issue #3855: StackOverflowError when using TRACE_LEVEL_SYSTEM_OUT=4
</li>
<li>PR #3854: Fix issues with newer JVMs
</li>
<li>PR #3851: Remove lift configuration
</li>
<li>PR #3847: Fix the NullPointerException caused by accessing 'user' after the session has been closed
</li>
<li>PR #3846: Make DB_CLOSE_ON_EXIT safer
</li>
<li>PR #3842: Adds support of quotedNulls in CSV handling
</li>
</ul>

<h2>Version 2.2.220 (2023-07-04)</h2>
<ul>
<li>PR #3834: Increase database format version
</li>
<li>PR #3833: Disallow plain webAdminPassword values to force usage of hashes
</li>
<li>PR #3831: Add Oracle-style NOWAIT, WAIT n, and SKIP LOCKED to FOR UPDATE clause
</li>
<li>PR #3830: Fix time zone of time/timestamp with time zone AT LOCAL
</li>
<li>PR #3822 / Issue #2671: Add quantified comparison predicates with array
</li>
<li>PR #3820: Add partial implementation of JSON simplified accessor
</li>
<li>PR #3818: Add support of underscores in numeric literals
</li>
<li>PR #3817: Add ANY_VALUE() aggregate function
</li>
<li>PR #3814: Fix regression in comparisons with infinities and NaNs
</li>
<li>Issue #3040: System objectIds are recycled twice when CTE queries are executed.
</li>
<li>PR #3812: UNIQUE null treatment
</li>
<li>PR #3811: BTRIM function, octal and binary literals and other changes
</li>
<li>Issue #352: In comparison text values are converted to INT even when they should be converted to BIGINT
</li>
<li>PR #3797: MSSQL mode: Discard table hints on plain UPDATE statements
</li>
<li>PR #3791: Formatted cast of datetimes to/from character strings
</li>
<li>Issue #3785: CSVRead: Fails to translate empty Numbers, when cells are quoted
</li>
<li>Issue #3762: Comparison predicates with row values don't create index conditions
</li>
<li>PR #3761: LAST_DAY function and other changes
</li>
<li>Issue #3705: Oracle DATE type: milliseconds (second fractions) rounded in H2 but truncated in Oracle (fixed in SYSDATE only)
</li>
<li>Issue #3642: AssertionError in mvstore.FileStore.serializeAndStore
</li>
<li>Issue #3675: H2 2.x cannot read PostgreSQL-style sequence generator start with option without WITH keyword
</li>
<li>Issue #3757: FORMATDATETIME function doesn't handle time with time zone properly
</li>
<li>PR #3756: Limit the row list allocation based on the row count
</li>
<li>PR #3753: Add missing NEWSEQUENTIALID function in MSSQLServer mode
</li>
<li>Issue #3730: FILE_READ from JAR filesystem on classpath results in file of length 0
</li>
<li>PR #3749: Fix min/max description for sequences
</li>
<li>PR #3739: Fix count(*) for linked table to Oracle
</li>
<li>Issue #3731: Division result exceeds numeric precision constraint
</li>
<li>PR #3718: Add test coverage for JDK 17
</li>
<li>Issue #3580: TestCrashAPI: NPE in ParserUtil.getTokenType() (called by Parser.readIfDataType1())
</li>
<li>PR #3709: Update copyright years and fix building of documentation
</li>
<li>Issue #3701: CLOBs can cause ClassCastExceptions
</li>
<li>Issue #3698: MySQL mode show columns from table, if modificationMetaId changed between prepared and execute.
Then error occurred.
</li>
<li>PR #3699: Upgrade to the latest OSGi JDBC specification
</li>
<li>Issue #3659: User-defined variable "sticky" if used in view with join
</li>
<li>Issue #3693: Wrong result when intersecting unnested arrays
</li>
<li>PR #3691: GitHub Workflows security hardening
</li>
<li>PR #3688: Construct FormatTokenEnum.TOKENS during class initialization
</li>
<li>Issue #3682: MVStoreException at accountForRemovedPage
</li>
<li>Issue #3664: [2.1.214] NullPointerException in org.h2.command.query.Select.queryDistinct
</li>
<li>PR #3650: fix version number in the archives html table
</li>
<li>PR #3649: Basic implementation of materialized view
</li>
<li>Issue #3646: org.h2.mvstore.MVStoreException: Chunk metadata too long
</li>
<li>Issue #3645: The BITCOUNT function incorrectly counts BINARY/VARBINARY values of &gt;=16 bytes.
</li>
<li>Issue #3637: DB content massacred when opening a 2.1.214 DB with current master
</li>
<li>Issue #3636: "This store is closed" after two-phase commit
</li>
<li>PR #3639: Add random_uuid() alias to be compatible with postgres
</li>
<li>Issue #3640: SOUNDEX function should not be case-sensitive
</li>
<li>Issue #3633: Memory leak in case of in-memory database
</li>
<li>PR #3629 Better separation between MVStore and FileStore
</li>
<li>PR #3626: Improve memory estimation of CacheLongKeyLIRS and correct some passed memory sizes
</li>
<li>Issue #3619: PostgreSQL mode: STRING_AGG with prepared statement parameter not working
</li>
<li>Issue #3615: H2 Console connecting to Oracle DB will not show the list of tables
</li>
<li>PR #3613: Fix infinite loop in Tokenizer when special whitespace character is used
</li>
<li>Issue #3606: Support for GraalVMs native-image
</li>
<li>Issue #3607: [MySQL] UNIX_TIMESTAMP should return NULL
</li>
<li>Issue #3604: Improper FROM_1X implementation corrupts some BLOBs during migration
</li>
<li>Issue #3597: Support array element assignments in UPDATE statements
</li>
<li>Issue #3599: [2.1.214][MariaDB] DELETE query failure
</li>
<li>Issue #3600: NPE in MVTable.lock(), version 2.1.214
</li>
<li>Issue #3601: InvalidPathException when saving lock file
</li>
<li>Issue #3583: lob cleaner issue
</li>
<li>Issue #3585: Misuse ValueReal.DECIMAL_PRECISION when optimize typeinfo from DOUBLE to DECFLOAT
</li>
<li>Issue #3575: Possible syntax mismatch for json_object in MySQL compatibility mode
</li>
<li>PR #3577: Add support of TINYINT and DECFLOAT to TO_CHAR
</li>
<li>Issue #3567: No AUTO_INCREMENT in DatabaseMetaData.getTypeInfo()
</li>
<li>PR #3555: Add missing check for -webExternalNames flag
</li>
<li>Issue #3543: PostgreSQL mode, update with "from", why "NULL not allowed" error?
</li>
<li>PR #3542: Fix failed to delete a readonly file on Windows file systems
</li>
</ul>

<h2>Version  2.1.214 (2022-06-13)</h2>
<ul>
<li>Issue #3538: In Postgres compatibility mode the NUMERIC type w/o scale should not default to 0
</li>
<li>Issue #3534: Subquery has incorrect empty parameters since 2.1.210 that breaks sameResultAsLast()
</li>
<li>Issue #3390: "ROW" cannot be set as a non keyword in 2.x
</li>
<li>Issue #3448: With linked table to postgreSQL, case-sensitive column names not respected in where part
</li>
<li>Issue #3434: JavaTableFunction is not closing underlying ResultSet when reading column list
</li>
<li>Issue #3468: Invalid DB format exception (for 1.x DB in 2.x h2) should have a specific SQLException vendorCode
</li>
<li>Issue #3528: Weird syntax error with HAVING clause in Oracle Mode
</li>
<li>Issue #3307: Fix SHUTDOWN DEFRAG for encrypted databases
</li>
<li>Issue #3515: Support for NEXTVAL property in DB2 mode
</li>
<li>Issue #3444: Conversion 'text' to 'integer' doesn't work anymore
</li>
<li>Issue #3493: org.h2.tools.DeleteDbFiles won't delete files under certain circumstances
</li>
<li>Issue #3486: FilePathDisk.newDirectoryStream() may fail on remote drive on Windows due to AccessDeniedException in Path.toRealPath()
</li>
<li>Issue #3484: LOB issue
</li>
</ul>

<h2>Version  2.1.212 (2022-04-09)</h2>
<ul>
<li>Issue #3512: BITNOT(BIT_NAND_AGG(...) OVER ()) produces wrong result
</li>
<li>Issue #3510: PreparedStatement execution with java.io.tmpdir pointing to a directory symlink results in FileAlreadyExistsException
</li>
<li>PR #3504: Fix TypeInfo.getHigherGeometry() for types with and without SRID
</li>
<li>PR #3481: Add support for standard interval literals with precision
</li>
<li>Issue #3471: Possibility of corruption after SHUTDOWN DEFRAG
</li>
<li>Issue #3473: DROP TABLE/INDEX causes memory leak
</li>
<li>PR #3464 / Issue #3457: increase max length of VAR* types
</li>
<li>PR #3460: fix bug in readStoreHeader()
</li>
<li>PR #3458: Add performance tests for SQLite
</li>
<li>Issue #1808: Occasional NPE in concurrent update of LOB
</li>
<li>Issue #3439: Cannot use enum values in JSON without explicit casts
</li>
<li>Issue #3426: Regression: BIT(1) is not accepted in MySQL compatibility mode
</li>
<li>PR #3422: Allow combination of any geometry types with the same SRID
</li>
<li>Issue #3414: H2 2.1.210: Query with Parameters throws NPE
</li>
<li>Issue #3413: Parser can&apos;t parse REFERENCES &hellip; NOT NULL
</li>
<li>Issue #3410: OOME with nested derived tables
</li>
<li>Issue #3405: Enhance SCRIPT to support operations on STDOUT
</li>
<li>Issue #3406 / PR #3407: FunctionMultiReturn.polar2CartesianArray result set iteration throws ClassCastException
</li>
<li>Issue #3400: Regression: ORDER BY ROWNUM fails with General error: "Unexpected code path"
</li>
<li>Issue #3387: SYSDATE behavior changed in 2.x
</li>
<li>Issue #3394: SYSDATE Considered Identifier when used in inner select
</li>
<li>Issue #3391: Hang on merge statement with data change delta table
</li>
<li>PR #3384: Remove abandoned Java to C converter and fix some warnings from Sonatype Lift
</li>
<li>PR #3382: Use secure parser in H2AuthConfigXml to avoid future reports
</li>
</ul>

<h2>Version 2.1.210 (2022-01-17)</h2>
<ul>
<li>PR #3381: Add IDENTITY() and SCOPE_IDENTITY() to LEGACY mode
</li>
<li>Issue #3376: Data cannot be read after insert of clob data > MAX_LENGTH_INPLACE_LOB with data change delta table
</li>
<li>PR #3377: Add -webExternalNames setting and fix WebServer.getConnection()
</li>
<li>PR #3367: Use faster checks of dimension systems of geometries
</li>
<li>PR #3369: Added v2 changes in migration docs
</li>
<li>Issue #3361: MemoryEstimator.estimateMemory() can return negative size
</li>
<li>PR #3362: Use BufferedReader instead of BufferedInputStream to avoid Illegal seek exception
</li>
<li>Issue #3353: Wrong rownum() scope for DML with change delta table
</li>
<li>PR #3352: make Javadoc happier
</li>
<li>Issue #3344: Changelog could link to github issue
</li>
<li>Issue #3340: JDBC index type seems wrong
</li>
<li>Issue #3336: FT_INIT error when mode=MySQL
</li>
<li>Issue #3334: Regression with CREATE ALIAS - Parameter "#2" is not set
</li>
<li>Issue #3321: Insert Primary Key after import CSV Data does not work
</li>
<li>PR #3323: Tokenize SQL before parsing and preserve tokens for recompilation
</li>
<li>PR #3320: Add Servlet 5-compatible servlet for H2 Console
</li>
<li>Issue #918: Parser fails recognising set operations in correlated subqueries
</li>
<li>Issue #2050: PostgreSQL with recursive fail with union in the final query
</li>
<li>PR #3316: Update copyright years
</li>
<li>PR #3315: Never put read locks into lockSharedSessions and other minor changes
</li>
<li>Issue #492: H2 does not correctly parse &lt;parenthesized joined table&gt;
</li>
<li>Issue #3311: Parser creates wrong join graph in some cases and uses wrong tables for column mapping
</li>
<li>FORCE_JOIN_ORDER setting is removed
</li>
<li>Issue #1983: Official build script is not compatible with Java 13
</li>
<li>PR #3305: Add UNIQUE(VALUE) and remove some non-standard keywords
</li>
<li>PR #3299: Remove useless StringBuilder.toString() call
</li>
<li>PR #3298: Delete unused sqlTypes array
</li>
</ul>

<h2>Version 2.0.206 (2022-01-04)</h2>
<ul>
<li>Issue #3322: Create linked table fails when the table contains a Geometry with a data type specified
</li>
<li>Issue #3297: Unexpected GROUP BY results with indexed IGNORECASE column
</li>
</ul>



<!-- [close] { --></div></td></tr></table><!-- } --><!-- analytics --></body></html>
